#ifndef __$(INTERFACEBASENAME)_H__
#define  __$(INTERFACEBASENAME)_H__

#include <e32base.h>
#include <ecom.h>

const TUid KC$(interfaceBasename) = {$(interfaceUid)};

class C$(interfaceBasename) : public CBase
{
public:
	/**
	* Instantiates default implementation of C$(interfaceBasename) interface.
	*/
	static C$(interfaceBasename) * NewL();
	
	/**
	* Instantiates implementation of C$(interfaceBasename) which has a specified data
	* in it's resource file.
	* @param aData 
	*/
	static C$(interfaceBasename) * NewL(const TDesC8& aData);
	
	/**
	* C$(interfaceBasename) destructor.
	*/
	virtual ~C$(interfaceBasename)();
	
	/**
	* Retrieves a list of all the implementations of this interface.
	* @param aImplInfoArray A reference to a client owned array which will be
	* filled with interface implementation data. The array will first be cleared
	* and all items destroyed before adding new data.
	*/
	static void ListAllImplementationsL(RImplInfoPtrArray& aImplInfoArray);
	
public:	
	/**
	* MethodL.	
	*/
	virtual void MethodL() = 0;
	
protected:
	/**
	* C$(interfaceBasename) constructor.
	*/
	C$(interfaceBasename)();
	
private:
	// Unique instance identifier
	TUid iDtor_ID_Key;
};

#include "$(InterfaceBasename).inl"

#endif //  __$(INTERFACEBASENAME)_H__
